"""
模块化优势-
    模块化区分，方便多人开发
    按照模块写成独立的模块，方便维护
    模块方便服用。很多相同的逻辑方便复制粘贴
在python中一个模块就是一个Py文件。模块名需要符合标识符规范
模块的引用:在一个模块中引入其他模块-和spring的制动注入一样
    import 模块名称
    impoer 模块名称 as 别名
    import 可以在程序的任意位置调用，但一般情况都是写在开头
        __name__为__main__是主模块 就是程序的入口一个程序只有一个主模块
    只引入某个模块的部分内容
        from 模块名称 import 变量/方法
        from 模块名称 import * 引入模块所有的内容
"""
import ObjectDemo_testModule as test
import ObjectDemo_module as module
from  ObjectDemo_module import age
from  ObjectDemo_module import name as name_module
print(test)
# 获取模块的名字 __name__
print(test.__name__)

"""
构建一个有意义的模块，这个模块有属性，有方法
"""
print(module.name)
print(module.func_add(1,2))
dog = module.Dog("bob",11)
print(dog.func_add(1,2))
print(age)
print(name_module)

"""
当我们模块过多过大时，就需要再次拆分，将模块组合成为包 和java的package一样
package里面必须有_init.py，这样就在自己的包写其他模块。给别人引入时也可以选择包里面的其他模块
_pycache__是模块的缓存文件，每次编译后都会生成缓存文件，这些缓存文件存放的机器码方便系统执行
    为了提升效率，python将编译后的文件存在缓存文件中，只要不修改下次引用直接引用缓存
"""
from package import a,b
print(a.a,b.b)